!(function (e, n) {
    "function" == typeof define && (define.amd || define.cmd)
        ? define(function () {
              return n(e)
          })
        : n(e, !0)
})(window, function (o, e) {
    if (!o.jWeixin) {
        var n,
            c = {
                config: "preVerifyJSAPI",
                onMenuShareTimeline: "menu:share:timeline",
                onMenuShareAppMessage: "menu:share:appmessage",
                onMenuShareQQ: "menu:share:qq",
                onMenuShareWeibo: "menu:share:weiboApp",
                onMenuShareQZone: "menu:share:QZone",
                previewImage: "imagePreview",
                getLocation: "geoLocation",
                openProductSpecificView: "openProductViewWithPid",
                addCard: "batchAddCard",
                openCard: "batchViewCard",
                chooseWXPay: "getBrandWCPayRequest",
                openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
                startSearchBeacons: "startMonitoringBeacons",
                stopSearchBeacons: "stopMonitoringBeacons",
                onSearchBeacons: "onBeaconsInRange",
                consumeAndShareCard: "consumedShareCard",
                openAddress: "editAddress",
            },
            a = (function () {
                var e = {}
                for (var n in c) e[c[n]] = n
                return e
            })(),
            i = o.document,
            t = i.title,
            r = navigator.userAgent.toLowerCase(),
            s = navigator.platform.toLowerCase(),
            d = !(!s.match("mac") && !s.match("win")),
            u = -1 != r.indexOf("wxdebugger"),
            l = -1 != r.indexOf("micromessenger"),
            p = -1 != r.indexOf("android"),
            f = -1 != r.indexOf("iphone") || -1 != r.indexOf("ipad"),
            m = (n = r.match(/micromessenger\/(\d+\.\d+\.\d+)/) || r.match(/micromessenger\/(\d+\.\d+)/)) ? n[1] : "",
            g = { initStartTime: L(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 },
            h = {
                version: 1,
                appId: "",
                initTime: 0,
                preVerifyTime: 0,
                networkType: "",
                isPreVerifyOk: 1,
                systemType: f ? 1 : p ? 2 : -1,
                clientVersion: m,
                url: encodeURIComponent(location.href),
            },
            v = {},
            S = { _completes: [] },
            y = { state: 0, data: {} }
        O(function () {
            g.initEndTime = L()
        })
        var I = !1,
            _ = [],
            w = {
                config: function (e) {
                    B("config", (v = e))
                    var t = !1 !== v.check
                    O(function () {
                        if (t)
                            M(
                                c.config,
                                { verifyJsApiList: C(v.jsApiList), verifyOpenTagList: C(v.openTagList) },
                                (function () {
                                    ;(S._complete = function (e) {
                                        ;(g.preVerifyEndTime = L()), (y.state = 1), (y.data = e)
                                    }),
                                        (S.success = function (e) {
                                            h.isPreVerifyOk = 0
                                        }),
                                        (S.fail = function (e) {
                                            S._fail ? S._fail(e) : (y.state = -1)
                                        })
                                    var t = S._completes
                                    return (
                                        t.push(function () {
                                            !(function () {
                                                if (!(d || u || v.debug || m < "6.0.2" || h.systemType < 0)) {
                                                    var i = new Image()
                                                    ;(h.appId = v.appId),
                                                        (h.initTime = g.initEndTime - g.initStartTime),
                                                        (h.preVerifyTime = g.preVerifyEndTime - g.preVerifyStartTime),
                                                        w.getNetworkType({
                                                            isInnerInvoke: !0,
                                                            success: function (e) {
                                                                h.networkType = e.networkType
                                                                var n =
                                                                    "https://open.weixin.qq.com/sdk/report?v=" +
                                                                    h.version +
                                                                    "&o=" +
                                                                    h.isPreVerifyOk +
                                                                    "&s=" +
                                                                    h.systemType +
                                                                    "&c=" +
                                                                    h.clientVersion +
                                                                    "&a=" +
                                                                    h.appId +
                                                                    "&n=" +
                                                                    h.networkType +
                                                                    "&i=" +
                                                                    h.initTime +
                                                                    "&p=" +
                                                                    h.preVerifyTime +
                                                                    "&u=" +
                                                                    h.url
                                                                i.src = n
                                                            },
                                                        })
                                                }
                                            })()
                                        }),
                                        (S.complete = function (e) {
                                            for (var n = 0, i = t.length; n < i; ++n) t[n]()
                                            S._completes = []
                                        }),
                                        S
                                    )
                                })(),
                            ),
                                (g.preVerifyStartTime = L())
                        else {
                            y.state = 1
                            for (var e = S._completes, n = 0, i = e.length; n < i; ++n) e[n]()
                            S._completes = []
                        }
                    }),
                        w.invoke ||
                            ((w.invoke = function (e, n, i) {
                                o.WeixinJSBridge && WeixinJSBridge.invoke(e, x(n), i)
                            }),
                            (w.on = function (e, n) {
                                o.WeixinJSBridge && WeixinJSBridge.on(e, n)
                            }))
                },
                ready: function (e) {
                    0 != y.state ? e() : (S._completes.push(e), !l && v.debug && e())
                },
                error: function (e) {
                    m < "6.0.2" || (-1 == y.state ? e(y.data) : (S._fail = e))
                },
                checkJsApi: function (e) {
                    M(
                        "checkJsApi",
                        { jsApiList: C(e.jsApiList) },
                        ((e._complete = function (e) {
                            if (p) {
                                var n = e.checkResult
                                n && (e.checkResult = JSON.parse(n))
                            }
                            e = (function (e) {
                                var n = e.checkResult
                                for (var i in n) {
                                    var t = a[i]
                                    t && ((n[t] = n[i]), delete n[i])
                                }
                                return e
                            })(e)
                        }),
                        e),
                    )
                },
                onMenuShareTimeline: function (e) {
                    P(
                        c.onMenuShareTimeline,
                        {
                            complete: function () {
                                M(
                                    "shareTimeline",
                                    {
                                        title: e.title || t,
                                        desc: e.title || t,
                                        img_url: e.imgUrl || "",
                                        link: e.link || location.href,
                                        type: e.type || "link",
                                        data_url: e.dataUrl || "",
                                    },
                                    e,
                                )
                            },
                        },
                        e,
                    )
                },
                onMenuShareAppMessage: function (n) {
                    P(
                        c.onMenuShareAppMessage,
                        {
                            complete: function (e) {
                                "favorite" === e.scene
                                    ? M("sendAppMessage", {
                                          title: n.title || t,
                                          desc: n.desc || "",
                                          link: n.link || location.href,
                                          img_url: n.imgUrl || "",
                                          type: n.type || "link",
                                          data_url: n.dataUrl || "",
                                      })
                                    : M(
                                          "sendAppMessage",
                                          {
                                              title: n.title || t,
                                              desc: n.desc || "",
                                              link: n.link || location.href,
                                              img_url: n.imgUrl || "",
                                              type: n.type || "link",
                                              data_url: n.dataUrl || "",
                                          },
                                          n,
                                      )
                            },
                        },
                        n,
                    )
                },
                onMenuShareQQ: function (e) {
                    P(
                        c.onMenuShareQQ,
                        {
                            complete: function () {
                                M(
                                    "shareQQ",
                                    {
                                        title: e.title || t,
                                        desc: e.desc || "",
                                        img_url: e.imgUrl || "",
                                        link: e.link || location.href,
                                    },
                                    e,
                                )
                            },
                        },
                        e,
                    )
                },
                onMenuShareWeibo: function (e) {
                    P(
                        c.onMenuShareWeibo,
                        {
                            complete: function () {
                                M(
                                    "shareWeiboApp",
                                    {
                                        title: e.title || t,
                                        desc: e.desc || "",
                                        img_url: e.imgUrl || "",
                                        link: e.link || location.href,
                                    },
                                    e,
                                )
                            },
                        },
                        e,
                    )
                },
                onMenuShareQZone: function (e) {
                    P(
                        c.onMenuShareQZone,
                        {
                            complete: function () {
                                M(
                                    "shareQZone",
                                    {
                                        title: e.title || t,
                                        desc: e.desc || "",
                                        img_url: e.imgUrl || "",
                                        link: e.link || location.href,
                                    },
                                    e,
                                )
                            },
                        },
                        e,
                    )
                },
                updateTimelineShareData: function (e) {
                    M("updateTimelineShareData", { title: e.title, link: e.link, imgUrl: e.imgUrl }, e)
                },
                updateAppMessageShareData: function (e) {
                    M("updateAppMessageShareData", { title: e.title, desc: e.desc, link: e.link, imgUrl: e.imgUrl }, e)
                },
                startRecord: function (e) {
                    M("startRecord", {}, e)
                },
                stopRecord: function (e) {
                    M("stopRecord", {}, e)
                },
                onVoiceRecordEnd: function (e) {
                    P("onVoiceRecordEnd", e)
                },
                playVoice: function (e) {
                    M("playVoice", { localId: e.localId }, e)
                },
                pauseVoice: function (e) {
                    M("pauseVoice", { localId: e.localId }, e)
                },
                stopVoice: function (e) {
                    M("stopVoice", { localId: e.localId }, e)
                },
                onVoicePlayEnd: function (e) {
                    P("onVoicePlayEnd", e)
                },
                uploadVoice: function (e) {
                    M("uploadVoice", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
                },
                downloadVoice: function (e) {
                    M(
                        "downloadVoice",
                        { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 },
                        e,
                    )
                },
                translateVoice: function (e) {
                    M(
                        "translateVoice",
                        { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 },
                        e,
                    )
                },
                chooseImage: function (e) {
                    M(
                        "chooseImage",
                        {
                            scene: "1|2",
                            count: e.count || 9,
                            sizeType: e.sizeType || ["original", "compressed"],
                            sourceType: e.sourceType || ["album", "camera"],
                        },
                        ((e._complete = function (e) {
                            if (p) {
                                var n = e.localIds
                                try {
                                    n && (e.localIds = JSON.parse(n))
                                } catch (e) {}
                            }
                        }),
                        e),
                    )
                },
                getLocation: function (e) {},
                previewImage: function (e) {
                    M(c.previewImage, { current: e.current, urls: e.urls }, e)
                },
                uploadImage: function (e) {
                    M("uploadImage", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
                },
                downloadImage: function (e) {
                    M(
                        "downloadImage",
                        { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 },
                        e,
                    )
                },
                getLocalImgData: function (e) {
                    !1 === I
                        ? ((I = !0),
                          M(
                              "getLocalImgData",
                              { localId: e.localId },
                              ((e._complete = function (e) {
                                  if (((I = !1), 0 < _.length)) {
                                      var n = _.shift()
                                      wx.getLocalImgData(n)
                                  }
                              }),
                              e),
                          ))
                        : _.push(e)
                },
                getNetworkType: function (e) {
                    M(
                        "getNetworkType",
                        {},
                        ((e._complete = function (e) {
                            e = (function (e) {
                                var n = e.errMsg
                                e.errMsg = "getNetworkType:ok"
                                var i = e.subtype
                                if ((delete e.subtype, i)) e.networkType = i
                                else {
                                    var t = n.indexOf(":"),
                                        o = n.substring(t + 1)
                                    switch (o) {
                                        case "wifi":
                                        case "edge":
                                        case "wwan":
                                            e.networkType = o
                                            break
                                        default:
                                            e.errMsg = "getNetworkType:fail"
                                    }
                                }
                                return e
                            })(e)
                        }),
                        e),
                    )
                },
                openLocation: function (e) {
                    M(
                        "openLocation",
                        {
                            latitude: e.latitude,
                            longitude: e.longitude,
                            name: e.name || "",
                            address: e.address || "",
                            scale: e.scale || 28,
                            infoUrl: e.infoUrl || "",
                        },
                        e,
                    )
                },
                getLocation: function (e) {
                    M(
                        c.getLocation,
                        { type: (e = e || {}).type || "wgs84" },
                        ((e._complete = function (e) {
                            delete e.type
                        }),
                        e),
                    )
                },
                hideOptionMenu: function (e) {
                    M("hideOptionMenu", {}, e)
                },
                showOptionMenu: function (e) {
                    M("showOptionMenu", {}, e)
                },
                closeWindow: function (e) {
                    M("closeWindow", {}, (e = e || {}))
                },
                hideMenuItems: function (e) {
                    M("hideMenuItems", { menuList: e.menuList }, e)
                },
                showMenuItems: function (e) {
                    M("showMenuItems", { menuList: e.menuList }, e)
                },
                hideAllNonBaseMenuItem: function (e) {
                    M("hideAllNonBaseMenuItem", {}, e)
                },
                showAllNonBaseMenuItem: function (e) {
                    M("showAllNonBaseMenuItem", {}, e)
                },
                scanQRCode: function (e) {
                    M(
                        "scanQRCode",
                        { needResult: (e = e || {}).needResult || 0, scanType: e.scanType || ["qrCode", "barCode"] },
                        ((e._complete = function (e) {
                            if (f) {
                                var n = e.resultStr
                                if (n) {
                                    var i = JSON.parse(n)
                                    e.resultStr = i && i.scan_code && i.scan_code.scan_result
                                }
                            }
                        }),
                        e),
                    )
                },
                openAddress: function (e) {
                    M(
                        c.openAddress,
                        {},
                        ((e._complete = function (e) {
                            e = (function (e) {
                                return (
                                    (e.postalCode = e.addressPostalCode),
                                    delete e.addressPostalCode,
                                    (e.provinceName = e.proviceFirstStageName),
                                    delete e.proviceFirstStageName,
                                    (e.cityName = e.addressCitySecondStageName),
                                    delete e.addressCitySecondStageName,
                                    (e.countryName = e.addressCountiesThirdStageName),
                                    delete e.addressCountiesThirdStageName,
                                    (e.detailInfo = e.addressDetailInfo),
                                    delete e.addressDetailInfo,
                                    e
                                )
                            })(e)
                        }),
                        e),
                    )
                },
                openProductSpecificView: function (e) {
                    M(
                        c.openProductSpecificView,
                        { pid: e.productId, view_type: e.viewType || 0, ext_info: e.extInfo },
                        e,
                    )
                },
                addCard: function (e) {
                    for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                        var r = n[t],
                            a = { card_id: r.cardId, card_ext: r.cardExt }
                        i.push(a)
                    }
                    M(
                        c.addCard,
                        { card_list: i },
                        ((e._complete = function (e) {
                            var n = e.card_list
                            if (n) {
                                for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
                                    var o = n[i]
                                    ;(o.cardId = o.card_id),
                                        (o.cardExt = o.card_ext),
                                        (o.isSuccess = !!o.is_succ),
                                        delete o.card_id,
                                        delete o.card_ext,
                                        delete o.is_succ
                                }
                                ;(e.cardList = n), delete e.card_list
                            }
                        }),
                        e),
                    )
                },
                chooseCard: function (e) {
                    M(
                        "chooseCard",
                        {
                            app_id: v.appId,
                            location_id: e.shopId || "",
                            sign_type: e.signType || "SHA1",
                            card_id: e.cardId || "",
                            card_type: e.cardType || "",
                            card_sign: e.cardSign,
                            time_stamp: e.timestamp + "",
                            nonce_str: e.nonceStr,
                        },
                        ((e._complete = function (e) {
                            ;(e.cardList = e.choose_card_info), delete e.choose_card_info
                        }),
                        e),
                    )
                },
                openCard: function (e) {
                    for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
                        var r = n[t],
                            a = { card_id: r.cardId, code: r.code }
                        i.push(a)
                    }
                    M(c.openCard, { card_list: i }, e)
                },
                consumeAndShareCard: function (e) {
                    M(c.consumeAndShareCard, { consumedCardId: e.cardId, consumedCode: e.code }, e)
                },
                chooseWXPay: function (e) {
                    M(c.chooseWXPay, V(e), e)
                },
                openEnterpriseRedPacket: function (e) {
                    M(c.openEnterpriseRedPacket, V(e), e)
                },
                startSearchBeacons: function (e) {
                    M(c.startSearchBeacons, { ticket: e.ticket }, e)
                },
                stopSearchBeacons: function (e) {
                    M(c.stopSearchBeacons, {}, e)
                },
                onSearchBeacons: function (e) {
                    P(c.onSearchBeacons, e)
                },
                openEnterpriseChat: function (e) {
                    M("openEnterpriseChat", { useridlist: e.userIds, chatname: e.groupName }, e)
                },
                launchMiniProgram: function (e) {
                    M(
                        "launchMiniProgram",
                        {
                            targetAppId: e.targetAppId,
                            path: (function (e) {
                                if ("string" == typeof e && 0 < e.length) {
                                    var n = e.split("?")[0],
                                        i = e.split("?")[1]
                                    return (n += ".html"), void 0 !== i ? n + "?" + i : n
                                }
                            })(e.path),
                            envVersion: e.envVersion,
                        },
                        e,
                    )
                },
                openBusinessView: function (e) {
                    M(
                        "openBusinessView",
                        { businessType: e.businessType, queryString: e.queryString || "", envVersion: e.envVersion },
                        ((e._complete = function (n) {
                            if (p) {
                                var e = n.extraData
                                if (e)
                                    try {
                                        n.extraData = JSON.parse(e)
                                    } catch (e) {
                                        n.extraData = {}
                                    }
                            }
                        }),
                        e),
                    )
                },
                miniProgram: {
                    navigateBack: function (e) {
                        ;(e = e || {}),
                            O(function () {
                                M("invokeMiniProgramAPI", { name: "navigateBack", arg: { delta: e.delta || 1 } }, e)
                            })
                    },
                    navigateTo: function (e) {
                        O(function () {
                            M("invokeMiniProgramAPI", { name: "navigateTo", arg: { url: e.url } }, e)
                        })
                    },
                    redirectTo: function (e) {
                        O(function () {
                            M("invokeMiniProgramAPI", { name: "redirectTo", arg: { url: e.url } }, e)
                        })
                    },
                    switchTab: function (e) {
                        O(function () {
                            M("invokeMiniProgramAPI", { name: "switchTab", arg: { url: e.url } }, e)
                        })
                    },
                    reLaunch: function (e) {
                        O(function () {
                            M("invokeMiniProgramAPI", { name: "reLaunch", arg: { url: e.url } }, e)
                        })
                    },
                    postMessage: function (e) {
                        O(function () {
                            M("invokeMiniProgramAPI", { name: "postMessage", arg: e.data || {} }, e)
                        })
                    },
                    getEnv: function (e) {
                        O(function () {
                            e({ miniprogram: "miniprogram" === o.__wxjs_environment })
                        })
                    },
                },
            },
            T = 1,
            k = {}
        return (
            i.addEventListener(
                "error",
                function (e) {
                    if (!p) {
                        var n = e.target,
                            i = n.tagName,
                            t = n.src
                        if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i)
                            if (-1 != t.indexOf("wxlocalresource://")) {
                                e.preventDefault(), e.stopPropagation()
                                var o = n["wx-id"]
                                if ((o || ((o = T++), (n["wx-id"] = o)), k[o])) return
                                ;(k[o] = !0),
                                    wx.ready(function () {
                                        wx.getLocalImgData({
                                            localId: t,
                                            success: function (e) {
                                                n.src = e.localData
                                            },
                                        })
                                    })
                            }
                    }
                },
                !0,
            ),
            i.addEventListener(
                "load",
                function (e) {
                    if (!p) {
                        var n = e.target,
                            i = n.tagName
                        n.src
                        if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
                            var t = n["wx-id"]
                            t && (k[t] = !1)
                        }
                    }
                },
                !0,
            ),
            e && (o.wx = o.jWeixin = w),
            w
        )
    }
    function M(n, e, i) {
        o.WeixinJSBridge
            ? WeixinJSBridge.invoke(n, x(e), function (e) {
                  A(n, e, i)
              })
            : B(n, i)
    }
    function P(n, i, t) {
        o.WeixinJSBridge
            ? WeixinJSBridge.on(n, function (e) {
                  t && t.trigger && t.trigger(e), A(n, e, i)
              })
            : B(n, t || i)
    }
    function x(e) {
        return (
            ((e = e || {}).appId = v.appId),
            (e.verifyAppId = v.appId),
            (e.verifySignType = "sha1"),
            (e.verifyTimestamp = v.timestamp + ""),
            (e.verifyNonceStr = v.nonceStr),
            (e.verifySignature = v.signature),
            e
        )
    }
    function V(e) {
        return {
            timeStamp: e.timestamp + "",
            nonceStr: e.nonceStr,
            package: e.package,
            paySign: e.paySign,
            signType: e.signType || "SHA1",
        }
    }
    function A(e, n, i) {
        ;("openEnterpriseChat" != e && "openBusinessView" !== e) || (n.errCode = n.err_code),
            delete n.err_code,
            delete n.err_desc,
            delete n.err_detail
        var t = n.errMsg
        t ||
            ((t = n.err_msg),
            delete n.err_msg,
            (t = (function (e, n) {
                var i = e,
                    t = a[i]
                t && (i = t)
                var o = "ok"
                if (n) {
                    var r = n.indexOf(":")
                    "confirm" == (o = n.substring(r + 1)) && (o = "ok"),
                        "failed" == o && (o = "fail"),
                        -1 != o.indexOf("failed_") && (o = o.substring(7)),
                        -1 != o.indexOf("fail_") && (o = o.substring(5)),
                        ("access denied" != (o = (o = o.replace(/_/g, " ")).toLowerCase()) &&
                            "no permission to execute" != o) ||
                            (o = "permission denied"),
                        "config" == i && "function not exist" == o && (o = "ok"),
                        "" == o && (o = "fail")
                }
                return (n = i + ":" + o)
            })(e, t)),
            (n.errMsg = t)),
            (i = i || {})._complete && (i._complete(n), delete i._complete),
            (t = n.errMsg || ""),
            v.debug && !i.isInnerInvoke && alert(JSON.stringify(n))
        var o = t.indexOf(":")
        switch (t.substring(o + 1)) {
            case "ok":
                i.success && i.success(n)
                break
            case "cancel":
                i.cancel && i.cancel(n)
                break
            default:
                i.fail && i.fail(n)
        }
        i.complete && i.complete(n)
    }
    function C(e) {
        if (e) {
            for (var n = 0, i = e.length; n < i; ++n) {
                var t = e[n],
                    o = c[t]
                o && (e[n] = o)
            }
            return e
        }
    }
    function B(e, n) {
        if (!(!v.debug || (n && n.isInnerInvoke))) {
            var i = a[e]
            i && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || "")
        }
    }
    function L() {
        return new Date().getTime()
    }
    function O(e) {
        l && (o.WeixinJSBridge ? e() : i.addEventListener && i.addEventListener("WeixinJSBridgeReady", e, !1))
    }
})
